h3.mb-3 Window

.form-line
    .header
        .title Theme
    select.form-control(
        [(ngModel)]='config.store.appearance.theme',
        (ngModelChange)='saveConfiguration()',
    )
        option(*ngFor='let theme of themes', [ngValue]='theme.name') {{theme.name}}

.form-line
    .header
        .title(*ngIf='hostApp.platform !== Platform.macOS') Acrylic background
        .title(*ngIf='hostApp.platform === Platform.macOS') Vibrancy
        .description Gives the window a blurred transparent background

    toggle(
        [(ngModel)]='config.store.appearance.vibrancy',
        (ngModelChange)='saveConfiguration()'
    )

.form-line(*ngIf='config.store.appearance.vibrancy && isFluentVibrancySupported')
    .header
        .title Background type
    .btn-group(
        [(ngModel)]='config.store.appearance.vibrancyType',
        (ngModelChange)='saveConfiguration()',
        ngbRadioGroup
    )
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='"blur"'
            )
            | Blur
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='"fluent"'
            )
            | Fluent

.form-line
    .header
        .title Opacity
    input(
        type='range',
        [(ngModel)]='config.store.appearance.opacity',
        (ngModelChange)='saveConfiguration(); (hostApp.platform === Platform.Linux && config.requestRestart())',
        min='0.4',
        max='1',
        step='0.01'
    )

.form-line
    .header
        .title Window frame
        .description Whether a custom window or an OS native window should be used

    .btn-group(
        [(ngModel)]='config.store.appearance.frame',
        (ngModelChange)='saveConfiguration(true)',
        ngbRadioGroup
    )
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='"native"'
            )
            | Native
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='"thin"'
            )
            | Thin
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='"full"'
            )
            | Full

.form-line
    .header
        .title Dock the terminal
        .description Snaps the window to a side of the screen

    .btn-group(
        [(ngModel)]='config.store.appearance.dock',
        (ngModelChange)='saveConfiguration(); docking.dock()',
        ngbRadioGroup
    )
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='"off"'
            )
            | Off
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='"top"'
            )
            | Top
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='"left"'
            )
            | Left
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='"right"'
            )
            | Right
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='"bottom"'
            )
            | Bottom

.ml-5.form-line(*ngIf='config.store.appearance.dock != "off"')
    .header
        .title Display on
        .description Snaps the window to a side of the screen

    div(
        [(ngModel)]='config.store.appearance.dockScreen',
        (ngModelChange)='saveConfiguration(); docking.dock()',
        ngbRadioGroup
    )
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                value='current'
            )
            | Current
        label.btn.btn-secondary(*ngFor='let screen of screens', ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='screen.id'
            )
            | {{screen.name}}

.ml-5.form-line(*ngIf='config.store.appearance.dock != "off"')
    .header
        .title Dock always on top
        .description Keep docked terminal always on top
    toggle(
        [(ngModel)]='config.store.appearance.dockAlwaysOnTop',
        (ngModelChange)='saveConfiguration(); docking.dock()',
    )

.ml-5.form-line(*ngIf='config.store.appearance.dock != "off"')
    .header
        .title Docked terminal size
    input(
        type='range',
        [(ngModel)]='config.store.appearance.dockFill',
        (mouseup)='saveConfiguration(); docking.dock()',
        min='0.05',
        max='1',
        step='0.01'
    )

.ml-5.form-line(*ngIf='config.store.appearance.dock != "off"')
    .header
        .title Docked terminal space
    input(
        type='range',
        [(ngModel)]='config.store.appearance.dockSpace',
        (mouseup)='saveConfiguration(); docking.dock()',
        min='0.2',
        max='1',
        step='0.01'
    )

.ml-5.form-line(*ngIf='config.store.appearance.dock != "off"')
    .header
        .title Hide dock on blur
        .description Hides the docked terminal when you click away.
    toggle(
        [(ngModel)]='config.store.appearance.dockHideOnBlur',
        (ngModelChange)='saveConfiguration(); ',
    )

.form-line
    .header
        .title Tabs location
    .btn-group(
        [(ngModel)]='config.store.appearance.tabsLocation',
        (ngModelChange)='saveConfiguration()',
        ngbRadioGroup
    )
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='"top"'
            )
            | Top
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='"bottom"'
            )
            | Bottom
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='"left"'
            )
            | Left
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='"right"'
            )
            | Right

.form-line
    .header
        .title Tabs width
    .btn-group(
        [(ngModel)]='config.store.appearance.flexTabs',
        (ngModelChange)='saveConfiguration()',
        ngbRadioGroup
    )
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='true'
            )
            | Dynamic
        label.btn.btn-secondary(ngbButtonLabel)
            input(
                type='radio',
                ngbButton,
                [value]='false'
            )
            | Fixed

.form-line
    .header
        .title Hide tab index

    toggle(
        [(ngModel)]='config.store.terminal.hideTabIndex',
        (ngModelChange)='config.save();',
    )

.form-line
    .header
        .title Hide tab close button

    toggle(
        [(ngModel)]='config.store.terminal.hideCloseButton',
        (ngModelChange)='config.save();',
    )
